home *** CD-ROM | disk | FTP | other *** search
GW-BASIC | 1980-01-01 | 8.1 KB | 283 lines |
- 1000 REM ** CCII BLACKJACK - JAN 3,78 - JESSEN **
- 1010 REM ADAPTED TO PC BY PATRICK LEABO--TUCSON
- 1015 REM
- 1020 SCREEN 0:COLOR 7,0:WIDTH 80:KEY OFF:LOCATE ,,0
- 1025 SND = 1:KEY 10,"":ON KEY (10) GOSUB 3800 :KEY (10) ON
- 1030 COMMON MENU:RANDOMIZE VAL(RIGHT$(TIME$,2))
- 1040 CLS:GOSUB 3440:Z7= RND (1):GOSUB 3250:Y= 1:COLOR 7,0
- 1050 LOCATE 7,7:PRINT "WELCOME TO...";:PRINT "BLACKJACK!"
- 1060 K= 0:W1= 0:R= RND (1):N= INT (1945* RND (1)+ 1):X= INT (10* RND (1))
- 1070 DIM D(52),E(5),V(5),T(5),W(5),T$(34),Q(52)
- 1080 FOR A= 1 TO 52:D(A)= 0:NEXT
- 1090 FOR A= 0 TO 39 STEP 13:FOR C= 1 TO 13:Q(A+ C)= C:NEXT C,A
- 1100 K= K+ 1:FOR P= 1 TO 5:E(P)= 0:V(P)= 0:T(P)= 0:NEXT :V(3)= 1
- 1110 LOCATE 9,2:GOSUB 3580
- 1120 LOCATE 23,54:PRINT STRING$(26," ")
- 1130 LOCATE 21,54:PRINT STRING$(26," ")
- 1140 LOCATE 9,3:PRINT STRING$(50," ")
- 1150 LOCATE 21,54:IF W1= 0 THEN GOSUB 3110
- 1160 IF W1> 0 THEN GOSUB 3090
- 1170 IF W1< 0 THEN GOSUB 3100
- 1180 GOSUB 3640:LOCATE 22,55:PRINT"WAGER $ "
- 1190 LOCATE 22,62:LINE INPUT W$:P=1
- 1200 IF W$= "END" OR W$="end" THEN CHAIN "MENU",1000
- 1210 W= VAL (W$):LOCATE 1,1
- 1220 IF W< = 500 THEN 1240:REM
- 1230 LOCATE 23,55:PRINT "HOUSE LIMIT IS $500";:GOSUB 3610:GOTO 1110
- 1240 IF W> 0 THEN 1260
- 1250 LOCATE 23,58:PRINT "BE SERIOUS";:GOSUB 3220:GOTO 1110
- 1260 IF W< 1 THEN 1290
- 1270 HP= HP+ 1
- 1280 GOTO 1320
- 1290 LOCATE 23,58
- 1300 PRINT "CHEAPSKATE";
- 1310 GOSUB 3610:GOTO 1110
- 1320 Q3= W
- 1330 IF Q3< 250 THEN 1350
- 1340 Q3= INT (Q3/ 10)
- 1350 FOR A4= 1 TO Q3:X= RND (1):NEXT :W(2)= W:W(3)= W:GOTO 1380
- 1360 TE= 0:NT= 0:LOCATE 9,14:PRINT "*I AM RESHUFFLING*":GOSUB 3220:GOTO 1110
- 1370 LOCATE 9,2:PRINT "HOUSE LIMIT IS $500":GOSUB 3610:GOTO 1110
- 1380 E(5)= 1:GOSUB 3510:GOSUB 2090:IF E(1)= 0 THEN 1400
- 1390 V(4)= 1
- 1400 V(5)= 1:E(5)= 2:GOSUB 3510:GOSUB 2090:M= X:P= 3:V(3)= 1
- 1410 GOSUB 3510:GOSUB 2090:G= X
- 1420 GOSUB 3690
- 1430 V(3)= V(3)+ 1
- 1440 GOSUB 3510:GOSUB 2090:IF V(2)> 0 THEN 1670
- 1450 S= X
- 1460 IF V(3)> 2 THEN 1670
- 1470 IF T(P)< 21 THEN 1570
- 1480 IF E(P)< 2 THEN 1500
- 1490 E(P)= E(P)- 1:T(P)= T(P)- 10:GOTO 1570
- 1500 LOCATE (Y9+ 2),(X9+ 8):PRINT "*BLACKJACK*"
- 1510 LOCATE 9,10:PRINT "I DEALT WRONG AGAIN!"
- 1520 E(5)= 2:P= 1:X9= 8:Y9= 3:X= M:GOSUB 2280
- 1530 IF V(3)< 5 THEN 1550
- 1540 W1= W1+ 2* W:GOTO 1560
- 1550 W1= W1+ 1.5* W
- 1560 GOTO 3000
- 1570 IF V(4)= 0 THEN 1670
- 1580 LOCATE 9,15:PRINT SPC( 22);""
- 1590 LOCATE 9,15:GOSUB 3640:PRINT "INSURANCE ";:COLOR 31,0:PRINT"?";:COLOR 7,0:GOSUB 3660:PRINT
- 1600 LOCATE 9,3:PRINT STRING$(50," ")
- 1610 KS$=LEFT$ (I$,1):IF KS$< > "Y" AND KS$<>"y" THEN 1670
- 1620 IF T(1)< 21 THEN 1650
- 1630 W1= W1+ W:PRINT
- 1640 LOCATE 9,8:PRINT "YOU WIN $";W/ 2;" ON INSURANCE":GOTO 1670
- 1650 W1= W1- W/ 2:PRINT
- 1660 LOCATE 9,8:PRINT "YOU LOST $";W/ 2;" ON INSURANCE"
- 1670 IF T(1)< 21 THEN 1720
- 1680 IF E(1)< 2 THEN 1700
- 1690 E(1)= E(1)- 1:T(1)= T(1)- 10:GOTO 1720
- 1700 LOCATE 9,22:PRINT "**I HAVE BLACKJACK**"
- 1710 X9= 8:Y9= 3:E(5)= 2:P= 1:X= M:GOSUB 2280:P= 3:GOTO 2910
- 1720 IF T(P)< = 21 THEN 1780
- 1730 IF E(P)> 0 THEN 1770
- 1740 LOCATE 9,16:PRINT "**YOU BUST**"
- 1750 GOSUB 3560:C1= T(P)- 5* (INT (T(P)/ 5)):IF V(2)= 1 THEN 1990
- 1760 GOTO 2690
- 1770 E(P)= E(P)- 1:T(P)= T(P)- 10
- 1780 IF V(1)= 2 THEN 1750
- 1790 IF V(3)> 4 THEN 1810
- 1800 GOTO 1820
- 1810 IF T(P)< 21 THEN 3230
- 1820 LOCATE (Y9+ 2),(X9+ 8):GOSUB 3640:COLOR 31,0:PRINT "PLAY ";:COLOR 7,0:GOSUB 3660
- 1830 V(1)= 0
- 1840 KS$= LEFT$ (I$,1):IF KS$= "H" OR KS$="h" THEN V(1)= 1:GOTO 1870
- 1850 IF KS$= "D" OR KS$="d" THEN V(1)= 2:GOTO 1870
- 1860 IF KS$= "S" OR KS$="s" THEN V(1)= 3:GOTO 1870
- 1865 IF KS$ <> "0" THEN BEEP :GOTO 1820
- 1870 LOCATE (Y9+ 2),(X9+ 8):PRINT " "
- 1880 IF V(1)< 3 THEN 2030
- 1890 IF V(2)> 0 THEN 2020
- 1900 IF V(3)> 2 THEN 2020
- 1910 IF Q(G)= Q(S)THEN 1940
- 1920 LOCATE 9,22:PRINT "THAT'S NO PAIR":GOSUB 3610
- 1930 LOCATE 9,22:PRINT " ":GOTO 1820
- 1940 V(2)= 1:IF Q(G)< 1 THEN 1960
- 1950 V(1)= 0
- 1960 T(3)= 0:T(2)= 0:P= 2:X9= 2:Y9= 19:GOSUB 3550
- 1970 X= S:GOSUB 2280:GOSUB 1980:P= 3:W(3)= W:X= G:GOSUB 1980:GOTO 1440
- 1980 GOSUB 2230:V(3)= 2:T(P)= C:RETURN
- 1990 P= 2:V(2)= 2:V(3)= 2:IF Q(G)< 1 THEN 2010
- 2000 V(1)= 0
- 2010 GOTO 1440
- 2020 LOCATE 9,22:PRINT "NO SPLITS NOW ":GOSUB 3610:LOCATE 9,22:PRINT" ":GOTO 1820
- 2030 IF V(1)< 2 THEN 2070
- 2040 IF V(3)= 2 THEN 2060
- 2050 LOCATE 9,22:PRINT "TOO LATE TO DOUBLE":GOSUB 3610:LOCATE 9,22:PRINT" ":GOTO 1820
- 2060 W(P)= 2* W(P)
- 2070 IF V(1)> 0 THEN 1430
- 2080 GOTO 1750
- 2090 GOSUB 2120:T(P)= T(P)+ C:IF V(5)= 0 THEN 2110
- 2100 V(5)= 0:RETURN
- 2110 GOSUB 2280:RETURN
- 2120 IF R> = 50 THEN 2170
- 2130 X= INT (53* RND (Y))
- 2140 IF X= 0 THEN 2130
- 2150 IF D(X)= 0 THEN 2210
- 2160 R= R+ 1:IF R< 50 THEN 2120
- 2170 FOR A= 1 TO 52:IF D(A)= K THEN 2190
- 2180 D(A)= 0
- 2190 NEXT
- 2200 TE= 0:NT= 0:R= 0:LOCATE 9,18:PRINT "*I RESHUFFLED*":GOSUB 3610:LOCATE 9,18:PRINT" ":GOTO 2120
- 2210 R= 0
- 2220 D(X)= K
- 2230 IF Q(X)> 1 THEN 2250
- 2240 C= 11:E(P)= E(P)+ 1:RETURN
- 2250 IF Q(X)> 10 THEN 2270
- 2260 C= Q(X):RETURN
- 2270 C= 10:RETURN
- 2280 GOSUB 2290:RETURN
- 2290 FOR I= 0 TO 34:T$(I)= " ":NEXT
- 2300 IF X> 39 THEN U$=CHR$ (5):GOTO 2340
- 2310 IF X> 26 THEN U$= CHR$ (3):GOTO 2340
- 2320 IF X> 13 THEN U$= CHR$(4):GOTO 2340
- 2330 U$= CHR$ (6)
- 2340 COLOR 0,7
- 2350 ON Q(X) GOTO 2540,2530,2520,2510,2490,2470,2460,2450,2440,2420,2380,2370
- 2360 T$(17)= "K":GOTO 2390
- 2370 T$(17)= "Q":GOTO 2390
- 2380 T$(17)= "J"
- 2390 T$(8)= U$:T$(7)= U$:T$(6)= U$:T$(11)= U$:T$(16)= U$
- 2400 T$(21)= U$:T$(26)= U$:T$(27)= U$:T$(28)= U$:T$(23)= U$
- 2410 T$(18)= U$:T$(13)= U$:GOTO 2550
- 2420 T$(6)= U$:T$(8)= U$:T$(16)= U$:T$(18)= U$:T$(26)= U$
- 2430 T$(28)= U$:GOTO 2510
- 2440 T$(7)= U$:T$(27)= U$:GOTO 2460
- 2450 T$(12)= U$:T$(22)= U$:GOTO 2470
- 2460 T$(17)= U$
- 2470 T$(6)= U$:T$(8)= U$:T$(16)= U$:T$(18)= U$:T$(26)= U$
- 2480 T$(28)= U$:GOTO 2550
- 2490 T$(6)= U$:T$(8)= U$:T$(17)= U$:T$(26)= U$:T$(28)= U$
- 2500 GOTO 2550
- 2510 T$(11)= U$:T$(13)= U$:T$(21)= U$:T$(23)= U$:GOTO 2550
- 2520 T$(7)= U$:T$(17)= U$:T$(27)= U$:GOTO 2550
- 2530 T$(12)= U$:T$(22)= U$:GOTO 2550
- 2540 T$(17)= U$
- 2550 IF Q(X)> 1 AND Q(X)< 11 THEN T$= RIGHT$ (STR$ (Q(X)),1)
- 2560 IF Q(X)= 11 THEN T$= "J"
- 2570 IF Q(X)= 12 THEN T$= "Q"
- 2580 IF Q(X)= 13 THEN T$= "K"
- 2590 IF Q(X)= 1 THEN T$= "A"
- 2600 IF X> 13 AND X< 40 THEN T$= T$
- 2610 IF Q(X)< > 10 GOTO 2640
- 2620 T$= LEFT$(U$,1):M$= RIGHT$ (STR$ (0),1):N$= RIGHT$ (STR$ (1),1)
- 2630 T$(0)= N$:T$(1)= M$:T$(33)= T$(0):T$(34)= T$(1):GOTO 2650
- 2640 T$(0)= T$:T$(34)= T$
- 2650 Z9= Y9+ 5:X1= X9:Y1= Y9:REM GOSUB 64000:GOSUB 3000
- 2660 NT= NT+ 1:IF Q(X)> 9 THEN TE= TE+ 1
- 2670 FOR I= 0 TO 30 STEP 5:LOCATE Z9-I/5,X9+2:FOR J= 0 TO 4:PRINT T$(I+ J);:NEXT J
- 2680 NEXT I:COLOR 7,0:RETURN
- 2690 P= 3:X= M:X9= 8:Y9= 3:GOSUB 2290
- 2700 IF T(3)< 22 THEN 2730
- 2710 IF V(2)= 0 THEN 2910
- 2720 GOTO 2910
- 2730 P= 1
- 2740 IF T(1)< 17 THEN 3020
- 2750 IF T(1)> 17 THEN 2770
- 2760 IF E(1)> 0 THEN 3020
- 2770 IF T(1)> 21 THEN 3030
- 2780 P= 3
- 2790 LOCATE 5,(X9+ 7):PRINT "TOTAL":LOCATE 7,(X9+ 7):PRINT T(1);
- 2800 IF T(P)> 21 THEN 2840
- 2810 IF T(1)> 21 THEN 2840
- 2820 IF T(1)> T(P)THEN 2910
- 2830 IF T(1)= T(P)THEN 2980
- 2840 W1= W1+ W(P):PRINT :LOCATE 9,2
- 2850 FOR J= 1 TO 50:PRINT " ";:NEXT :PRINT :LOCATE 9,12
- 2860 IF C1> 3 THEN 3120
- 2870 IF C1> 2 THEN 3130
- 2880 IF C1> 1 THEN 3140
- 2890 IF C1> 0 THEN 3150
- 2900 GOTO 3160
- 2910 W1= W1- W(P):PRINT :LOCATE 9,2
- 2920 FOR J= 1 TO 50:PRINT " ";:NEXT :PRINT :LOCATE 9,12
- 2930 IF C1> 3 THEN 3170
- 2940 IF C1> 2 THEN 3180
- 2950 IF C1> 1 THEN 3190
- 2960 IF C1> 0 THEN 3200
- 2970 GOTO 3210
- 2980 LOCATE 9,24:PRINT "WE PUSH"
- 2990 IF V(2)> 0 THEN 3010
- 3000 GOSUB 3060:GOSUB 3610:GOTO 1100
- 3010 P= 3:V(2)= 0:GOTO 2800
- 3020 E(5)= E(5)+ 1:P= 1:GOSUB 3510:GOSUB 2090:GOTO 2730
- 3030 IF E(1)= 0 THEN 3050
- 3040 E(1)= E(1)- 1:T(1)= T(1)- 10:GOTO 2730
- 3050 LOCATE 6,(X9+ 13):PRINT "*I BUST*":GOTO 2780
- 3060 LOCATE 9,25:RETURN
- 3070 IF W1< 0 THEN 3100
- 3080 IF W1= 0 THEN 3110
- 3090 PRINT "YOU'RE AHEAD $";W1;:RETURN
- 3100 PRINT "YOU'RE BEHIND $";- W1;:RETURN
- 3110 PRINT "YOU'RE EVEN ";:RETURN
- 3120 PRINT "I MUST HAVE DEALT WRONG":GOTO 2990
- 3130 PRINT "YOU'RE LUCKY AGAIN":GOTO 2990
- 3140 PRINT "YOU MUST HAVE BEEN PEEKING":GOTO 2990
- 3150 PRINT "I COULD LOSE MY JOB THIS WAY":GOTO 2990
- 3160 PRINT "THE CARDS HAVE TURNED AGAINST ME":GOTO 2990
- 3170 PRINT "*THE BOTTOM OF THE DECK STRIKES AGAIN*":GOTO 2990
- 3180 PRINT "A VICTORY FOR US GOOD GUYS":GOTO 2990
- 3190 PRINT "YOU CAN'T BEAT SKILL":GOTO 2990
- 3200 PRINT "YOU CAN'T WIN THEM ALL":GOTO 2990
- 3210 PRINT "THANKS!":GOTO 2990
- 3220 FOR M9= 1 TO 52:D(M9)= 0:NEXT :R= 0:RETURN
- 3230 LOCATE 9,12:PRINT "*YOU WIN WITH 5 CARDS*":PRINT :GOTO 1520
- 3240 REM DRAW INSTRUCTIONS
- 3250 COLOR 0,7
- 3260 FOR N=2 TO 18:LOCATE N,54:PRINT STRING$(26," "):NEXT
- 3270 LOCATE 2,58:PRINT "IBM PC BLACKJACK";
- 3280 LOCATE 3,60:PRINT"************"
- 3290 LOCATE 4,55:PRINT"FOLLOW ALL BETS WITH"
- 3300 LOCATE 5,60:PRINT"RETURN KEY"
- 3310 LOCATE 7,55:PRINT"RESPONSES:"
- 3320 LOCATE 8,57:PRINT"<CR> = STAND":LOCATE 9,60:PRINT"H = HIT"
- 3330 LOCATE 10,60:PRINT"D = DOUBLE DOWN":LOCATE 11,60:PRINT"S = SPLIT PAIR"
- 3340 LOCATE 12,58:PRINT"INSURANCE:"
- 3350 LOCATE 13,60:PRINT"N = NO":LOCATE 14,60:PRINT"Y = YES"
- 3360 LOCATE 15,63:PRINT"RULES:"
- 3370 LOCATE 16,54:PRINT"HOUSE LIMIT IS $500.00"
- 3380 LOCATE 17,54:PRINT"BLACKJACK PAYS 1.5 TO 1"
- 3390 LOCATE 18,54:PRINT;"BET END TO QUIT";:COLOR 7,0
- 3400 ME$="HOUSE":FOR YP=1 TO YP+LEN(ME$):LOCATE YP+1,2:PRINT MID$(ME$,YP,1):NEXT
- 3410 ME$="PLAYER":FOR YP=1 TO YP+LEN(ME$):LOCATE YP+9,2:PRINT MID$(ME$,YP,1):NEXT
- 3420 RETURN
- 3430 REM DRAW FIELD
- 3440 LOCATE 1,1:PRINT"ERR";STRING$(51,"THEN");"FN";STRING$(26,"THEN");"OPTION";
- 3450 LOCATE 2,1:FOR N=1 TO 22:PRINT"CALL"TAB(53);"CALL";TAB(80);"CALL";:NEXT
- 3460 LOCATE 24,1:PRINT"CALL";:LOCATE 24,53:PRINT"CALL";
- 3470 LOCATE 25,1:PRINT"ERL";STRING$(51,"THEN");"STEP";STRING$(26,"THEN");
- 3480 DEF SEG=&HB000:POKE 3998,190:POKE 3838,179:DEF SEG
- 3490 LOCATE 19,53:PRINT"PSETTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHEN<0xB5!>"
- 3500 LOCATE 1,1:RETURN
- 3510 ON P GOTO 3520,3530,3540
- 3520 X9= INT (2+ E(5)* 6- 6):Y9= 3:GOTO 3550
- 3530 X9= INT (2+ V(3)* 6- 6):Y9= 19:GOTO 3550
- 3540 X9= INT (2+ V(3)* 6- 6):Y9= 11
- 3550 RETURN
- 3560 LOCATE (Y9+ 0),(X9+ 7):PRINT "TOTAL";
- 3570 LOCATE (Y9+ 3),(X9+ 7):PRINT T(P);:RETURN
- 3580 FOR N=1 TO 7:LOCATE N+1,3:PRINT STRING$(50," "):NEXT
- 3590 FOR N=0 TO 15:LOCATE N+9,3:PRINT STRING$(50," ");:NEXT
- 3600 RETURN
- 3610 FOR P1= 1 TO 1000:NEXT P1:RETURN
- 3620 REM PLINK
- 3630 IF SND = 1 THEN PLAY "L64T200N46":REM PLINK
- 3635 RETURN
- 3640 REM PLONK
- 3650 IF SND = 1 THEN PLAY "L64T200N70":REM PLONK
- 3655 RETURN
- 3660 REM KEYSTROKE
- 3670 I$=INKEY$:IF I$=""THEN 3670 ELSE IF I$= CHR$(13) THEN I$= "0":RETURN
- 3680 RETURN
- 3690 REM BACK OF CARD
- 3700 COLOR 0,7:CB$= "TAB(TAB(TAB(TAB(TAB("
- 3710 GOSUB 3620
- 3720 X1= 10:Y1= 1:FOR NN= 7 TO 1 STEP - 1
- 3730 LOCATE Y1+NN,X1:PRINT CB$:NEXT :COLOR 7,0:RETURN
- 3800 REM toggle sound on or off with F10
- 3810 IF SND = 1 THEN SND = 0 ELSE SND=1
- 3820 RETURN
-